package calss_1_21exception;

class CloseTest implements AutoCloseable{
    @Override
    public void close() throws Exception {
        System.out.println("close方法正常执行结束~~~~");
    }
}
public class ExceptionTest {
    public static void main(String[] args) {
        try(CloseTest closeTest=new CloseTest()){

        }catch (Exception e){

        }
//        int[] data= {1,3,5};
//        try{
//            System.out.println(data[10]);
//        }catch(ArrayIndexOutOfBoundsException e) {
//            System.out.println("数组越界了");
//            //打印堆栈错误信息
//            e.printStackTrace();
//        }finally {
//            //无论是否产生异常finally代码块都会执行
//            System.out.println("finally代码块");
//        }
/**
        File file=new File("test.txt");
        Scanner scanner=null;
        try {
            scanner=new Scanner(file);
            System.out.println("文件正确加载完毕");
        } catch (FileNotFoundException e) {
            System.out.println("文件不存在");
            e.printStackTrace();
        }finally {
            System.out.println("文件处理完毕");
        }*/
//        try{
        //此时main也没有进行异常处理
 //           exceptionChain();
//        }catch (ArrayIndexOutOfBoundsException e){
//            System.out.println("越界异常");
//            e.printStackTrace();
//        }
    }
    public static void exceptionChain(){
        int[] arr=new int[3];
        //产生越界异常，但是此方法中没有处理，就会将此异常抛出给调用者
        System.out.println(arr[10]);
    }
    public static int testException(){
        try{
            String str=null;
            System.out.println(str.equals("test"));
            return 1;
        }catch (NullPointerException e){
            return 2;
        }finally {
            System.out.println("finally代码块");
            return 3;
        }
    }
}
